<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //Promise的基本使用方式
        console.dir(Promise);
        function ajax(url) {
            //创建一个Promise对象
            var promiseObj = new Promise((resolve, reject) => {
                //resolve代表的是成功回调
                //reject 代表的是失败回调
                //创建一个ajax对象
                var xhr = new XMLHttpRequest();
                //连接服务器
                xhr.open("get", url, true);
                //发送数据
                xhr.send(null)
                //接受返回值
                xhr.onreadystatechange = function () {
                    if (xhr.readyState != 4) return;
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        //处理成功的请求
                        resolve(xhr.responseText)
                    } else {
                        //说明请求失败
                        reject("请求错误")
                    }
                }

            })
            return promiseObj
        }

        var hg1 = ajax("http://localhost:3000/haogu1") //primise实例对象
        var hg2 = ajax("http://localhost:3000/haogu2") //primise实例对象 
        var hg3 = ajax("http://localhost:3000/haogu3") //primise实例对象

        // Promise.all([hg1,hg2,hg3])  将多个promise实例对象，包装成一个新的Promise实例
        // 三个promise实例hg1，hg2，hg3只有这三个实例的状态都为成功(fulfilled),说明成功，只要有一个失败，整个都失败了
        // 成功的结果是一个数组
        Promise.all([hg1, hg2, hg3]).then((result) => {
            console.log(result); //["haogu1", "haogu2", "haogu3"]
            console.log(JSON.parse(result[0]).username);
        })
    </script>
</body>

</html>